package action;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import model.bean.Dictionary;
import model.bean.Language;
import model.bo.SearchWordBO;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import form.SearchForm;

/**
 * Action Class ExampleXMLAction
 */
public class SearchAction extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession  session = request.getSession();
		SearchForm searchForm = (SearchForm) form;
		SearchWordBO bo = new SearchWordBO();
		
		String itemSearch = null;
		String langSource = "En";// Khởi tạo mặc định ngôn ngữ nhập là English
		String langTarget = "En";// Khởi tạo mặc định ngôn ngữ kết quả tìm kiếm là English
		
		// Khởi tạo mảng lưu danh sách các ngôn ngữ được hỗ trợ
		ArrayList<Language> listLanguage = new ArrayList<Language>();
		// Mảng lưu danh sách từ điển tương ứng với ngôn ngữ được chọn
		ArrayList<Dictionary> listWord = new ArrayList<Dictionary>();
		//Ký tự bắt đầu được chọn để tìm kiếm
		String startWith = request.getParameter("startWith");
		// Lấy danh sách ngôn ngữ
		listLanguage = bo.GetListLang();
		// Biến kiểm tra nhấn nút "Search"
		String isSearch = null;
		
		/*
		 *  Kiểm tra có nhấn vào button Search
		 */
		if(request.getParameter("btnSearch") != null){// Đã nhấn vào button Search
			session.setAttribute("isSearch", "true");
			session.removeAttribute(startWith);
		}
		// Lấy giá trị hiện có được lưu trong session
		isSearch = (String) session.getAttribute("isSearch");
		
		/*
		 * Trường hợp chưa thực hiện nhấn vào button Search
		 */
		if(isSearch == null){
			if(startWith != null){
				listWord = bo.GetListWordChoose(startWith, langSource, langTarget);
				session.setAttribute("startWith", startWith);
			}
		}
		else {
			/*
			 *  Trường hợp đã nhấn button Search
			 */
			// Lấy thông tin truyền từ form
			itemSearch = searchForm.getSearchItem();
			langSource = searchForm.getLangSource();
			langTarget = searchForm.getLangTarget();
			//Lấy danh sách kết quả
			listWord = bo.GetListWord(itemSearch, langSource, langTarget);
			if(startWith != null){
				listWord = bo.GetListWordChoose(startWith, langSource, langTarget);
				session.setAttribute("startWith", startWith);
			}
		}
		// Set thông tin request đến trang hiển thị kết quả
		request.setAttribute("listLang", listLanguage);
		request.setAttribute("listWord", listWord);
		searchForm.setListWord(listWord);
		return mapping.findForward("success");
	}

}